package com.lxw.oa.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TreeUtil {

    /**
     *
     * @param list 传入进来的数据集合
     * @param parentName 返回数据集合的父类字段名称
     * @param parentValue 返回数据集合的父类字段值
     * @param childName    返回数据集合的子类字段（用来对其去重）
     * @param childCommentName  返回数据集合的子类字段的别名字段名，也称注释字段名
     * @param level  自定义数据集等级
     * @param isRoot  是否是顶层
     * @return
     */
    public static List<TreeModal> getChildModel(List<Map<String,String>> list, String parentName,
                                                String parentValue,String childName,String childCommentName,String level,boolean isRoot){

        int order=0;
        //此map用作于判断重复
        Map<String,String> dataChildValues=new HashMap<String,String>();
        List<TreeModal> listChild=new ArrayList<TreeModal>();
        for(Map<String,String> map:list){
            if(isRoot){
                //如果该子类值没有被记录过，则新增，否则跳过,同样的，如果父类值为空，则也跳过
                if(!dataChildValues.containsKey(map.get(childName))){
                    dataChildValues.put(map.get(childName),"1");
                    order++;
                    TreeModal treeModal=new TreeModal();
                    treeModal.setDataName(map.get(childName));
                    if(map.containsKey(childCommentName)){
                        treeModal.setDataComment(map.get(childCommentName));
                    }
                    treeModal.setDataOrder(order);
                    treeModal.setDataLevel(level);
                    listChild.add(treeModal);
                }
            }else{
                if(map.containsKey(parentName)&&map.get(parentName).equals(parentValue)){
                    //如果该子类值没有被记录过，则新增，否则跳过,同样的，如果父类值为空，则也跳过
                    if(!dataChildValues.containsKey(map.get(childName))){
                        dataChildValues.put(map.get(childName),"1");
                        order++;
                        TreeModal treeModal=new TreeModal();
                        treeModal.setDataName(map.get(childName));
                        if(map.containsKey(childCommentName)){
                            treeModal.setDataComment(map.get(childCommentName));
                        }
                        treeModal.setDataOrder(order);
                        treeModal.setDataLevel(level);
                        listChild.add(treeModal);
                    }
                }
            }




       }
        return listChild;
    }


}
